#include <Lucnx/interrupt.h>
#include <Lucnx/printf.h>
#include <Lucnx/syscall.h>
#include <Lucnx/string.h>
#include <Lucnx/printk.h>

void hang()
{
    set_interrupt_state(false);
    asm volatile("hlt");
    while (1);
}

u8 bcd_to_bin(u8 bcd)
{
    return (bcd & 0xf) + (bcd >> 4) * 10;
}

void printm(void *dest, u32 cnt)
{
    printk("\nprint address 0x%p %dbytes\n", dest, cnt);

    u8 *ptr = dest; 

    while (cnt--)
    {
        u8 byte = *ptr++;
        printk("%X%X ", (byte >> 4) & 0xf, byte & 0xf);
    }
    putchk('\n');
}